package strategy.concretas;

import classes.FixedLengthDocument;
import javax.swing.text.PlainDocument;

import strategy.IDocument;

/**
 * Objeto PainDocument que aplica Regex definido.
 * @since 2009.08.17
 */
public class DocNovo implements IDocument {

    PlainDocument doc;
    String er;
    private int limite = -1;

    /**
     * Cria um novo PlainDocument com a Expressão recebida.
     * @param pEr Expressão a ser aplicada.
     */
    public DocNovo(String pEr) {
        super();
        this.er = pEr;
    }

    /**
     * Cria um novo PlainDocument com a Expressão recebida.
     * @param pEr Expressão a ser aplicada.
     * @param limite a quantidade máxima de caracteres aceitos.
     * Valores menores que zero significam que não possui limite.
     */
    public DocNovo(String pEr, int limite) {
        super();
        this.er = pEr;
        this.limite = limite;
    }

    @Override
    /**
     * Retorna um PlainDocument com a Expressão Regular definida.
     */
    public PlainDocument getDocumentoPlano() {
        if (doc == null) {
            doc = new FixedLengthDocument(limite, er);
        }
        return doc;
    }
}
